import cv2

# 初始化摄像头
cap = cv2.VideoCapture(0)  # 0 通常是默认摄像头的标识

# 设置视频编解码器，这里使用MJPG，您也可以根据需要选择其他编解码器，如XVID等
fourcc = cv2.VideoWriter_fourcc(*'MJPG')

# 获取视频的帧率，这里假设为30fps，您可以根据实际情况调整
fps = 30.0

# 获取视频的尺寸（宽度和高度）
frame_width = int(cap.get(3))
frame_height = int(cap.get(4))

# 创建VideoWriter对象，用于输出视频
out = cv2.VideoWriter('../output.avi', fourcc, fps, (frame_width, frame_height))

# 检查摄像头是否成功打开
if not cap.isOpened():
    print("无法打开摄像头")
    exit()

while True:
    # 逐帧捕获
    ret, frame = cap.read()

    # 如果正确读取帧，ret为True
    if not ret:
        print("无法接收帧，请退出")
        break

    # 显示结果帧
    cv2.imshow('Camera', frame)

    # 将当前帧写入视频文件
    out.write(frame)

    # 按下'q'键退出循环
    if cv2.waitKey(1) == ord('q'):
        break

# 释放资源
cap.release()
out.release()  # 释放VideoWriter
# 关闭所有OpenCV窗口
cv2.destroyAllWindows()
